package com.zhss.designpattern.facade;

/**
 * @author fanwei
 * @desc 外观设计模式
 *       好处：1.子系统2不需要care太多的模块，只要care一个门面类的接口就可以了
 *             2.如果多个地方都要调用这段逻辑，那么如果这个逻辑变了，只需要在门面类一个地方修改就可以了
 */
public class FacadePatternDemo {

    public static void main(String[] args) {
        SystemFacade systemFacade = new SystemFacade();
        systemFacade.execute();
    }

    static class SystemFacade{

        public void execute(){
            ModuleA moduleA = new ModuleA();
            ModuleB moduleB = new ModuleB();
            ModuleC moduleC = new ModuleC();

            moduleA.execute();
            moduleB.execute();
            moduleC.execute();
        }
    }

    static class ModuleA{

        public void execute(){
            System.out.println("----ModuleA 执行方法！！！---");
        }
    }

    static class ModuleB{

        public void execute(){
            System.out.println("----ModuleB 执行方法！！！---");
        }
    }

    static class ModuleC{

        public void execute(){
            System.out.println("----ModuleC 执行方法！！！---");
        }
    }
}
